package com.aabte.design.pattern.behavioral.iterator;

public class Test {

    public static void main(String[] args) {

        CourseAggregate courseAggregate = new CourseAggregateImpl();

        Course courseA = new Course("course A");
        Course courseB = new Course("course B");
        Course courseC = new Course("course C");
        Course courseD = new Course("course D");
        Course courseE = new Course("course E");
        courseAggregate.addCourse(courseA);
        courseAggregate.addCourse(courseB);
        courseAggregate.addCourse(courseC);
        courseAggregate.addCourse(courseD);
        courseAggregate.addCourse(courseE);

        System.out.println("---------- 课程列表 ----------");
        printCourses(courseAggregate);

        courseAggregate.removeCourse(courseC);
        courseAggregate.removeCourse(courseD);

        System.out.println();
        System.out.println("---------- 删除操作后的课程列表 ----------");
        printCourses(courseAggregate);


        /*
        ---------- 课程列表 ----------
        返回课程，位置是：0
        course A
        返回课程，位置是：1
        course B
        返回课程，位置是：2
        course C
        返回课程，位置是：3
        course D
        返回课程，位置是：4
        course E

        ---------- 删除操作后的课程列表 ----------
        返回课程，位置是：0
        course A
        返回课程，位置是：1
        course B
        返回课程，位置是：2
        course E
         */

    }

    private static void printCourses(CourseAggregate courseAggregate) {
        CourseIterator courseIterator = courseAggregate.getCourseIterator();
        while (!courseIterator.isLastCourse()) {
            Course course = courseIterator.nextCourse();
            System.out.println(course.getName());
        }

    }

}
